/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sie_invdis;



import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.print.PageFormat;
/**
 *
 * @author michelle
 */
public class articulos_sie_invefisico_imprimir {

  private Font fuente = new Font("Dialog", Font.PLAIN, 10);
	private PrintJob pj;
	private Graphics pagina;
    private Vector cadenas_a_imprimir;
    private JTextArea Objeto_textarea;
    private JTable Objeto_tabla;
    private int margen;
    private int vinterlineado=0;
    private int lineasxpag=0;
    public articulos_sie_invefisico_imprimir()
	{
		this.cadenas_a_imprimir=new Vector(1);
	}
	/********************************************************************
	*	A continuación el método "imprimir(String)", el encargado de 	*
	*	colocar en el objeto gráfico la cadena que se le pasa como 		*
	*	parámetro y se imprime.											*
	********************************************************************/
    public void imprimir_all(int opcion,int pag)
    {
        //LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
        this.pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Imprimir Ticket", null);
        float dif=0;
        int bloquefactura=20,bloqueusado=0,controlfila=0,bloquefijo=0;
        //this.pj = Toolkit.getDefaultToolkit().getPrintJob(null, "Imprimir Ticket", null);
		try
		{
			pagina = pj.getGraphics();
            pagina.setFont(fuente);
			pagina.setColor(Color.black);
            int indice_arreglo=0,filas_impresion=0,ni=0,filas_dif=0,nip=0,nif=0;
            int nobjetotabla=this.getObjeto_tabla().getRowCount();
            int nobjetocadenas=this.cadenas_a_imprimir.size();
            String s="",s2="",s3[]=null,s4="",s1="";
            if(pagina!=null)
            {
                //System.out.println("Numero de filas para imprimir: "+nobjetotabla);
                /*Impresion de encabezado*/
                for(indice_arreglo=0;indice_arreglo<nobjetocadenas &&
                        !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;indice_arreglo++,filas_impresion++)
                {
                    pagina.drawString(this.cadenas_a_imprimir.get(filas_impresion)+"",0,55+(filas_impresion*10));
                }
                filas_impresion+=2;
                /**/
                //mando imprimir recepcion normal
                 if (opcion==1)
                 {

                        pagina.drawString("Clave/Descp",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Precio",180,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Teor",220,50+(filas_impresion*10));//100
                        pagina.drawString("Fis",250,50+(filas_impresion*10));//100
                        pagina.drawString("DIF",280,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                s3=this.Objeto_tabla.getValueAt(ni,1).toString().split(":");
                                if(s3[1].length()>7)
                                    {
                                        s=s3[1].substring(0,7);
                                    }
                                else
                                    {
                                        s=s3[1];
                                    }

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,130,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),180,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),220,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),250,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7).toString().replace("<html>", "").replace("</html>", "").replace("<font>", "").replace("<font color=\"YELLOW\">", "").replace("<b>", "").replace("</b>", "").replace("<BODY>", "").replace("<font color=#CC0000>", "").replace("</BODY>", "")+""),280,50+(filas_impresion*10));//precio
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
            if (opcion==2)
                 {

                        pagina.drawString("idsub",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Subfamilia",80,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("cant Teorica",300,50+(filas_impresion*10));//100
                        pagina.drawString("Fisica",400,50+(filas_impresion*10));//100
                        pagina.drawString("Diferencia",500,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                //if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>35)
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,35);
                                    //}
                                //else
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    //}

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),80,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),300,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),400,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),500,50+(filas_impresion*10));//precio
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
            if (opcion==3)
                 {

                        pagina.drawString("idsub",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Subfamilia",80,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("cant Fisica",400,50+(filas_impresion*10));//100
                        pagina.drawString("Importe Costo",500,50+(filas_impresion*10));//100

                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                //if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>35)
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,35);
                                    //}
                                //else
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    //}

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),80,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),400,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),500,50+(filas_impresion*10));//precio
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
            if (opcion==4)
                 {

                        pagina.drawString("Status",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",80,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Fecha",250,50+(filas_impresion*10));//100
                        pagina.drawString("Realizo",310,50+(filas_impresion*10));//100
                        pagina.drawString("Confirmo",410,50+(filas_impresion*10));//100
                        pagina.drawString("Pz",550,50+(filas_impresion*10));//100
                        pagina.drawString("Costo",610,50+(filas_impresion*10));//100
                        pagina.drawString("Precio",670,50+(filas_impresion*10));//100
                        pagina.drawString("P.Rebaja",730,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*35);
                        nip=((pag+1)*35)-35;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                s3=this.Objeto_tabla.getValueAt(ni,2).toString().split(":");
                                if((this.Objeto_tabla.getValueAt(ni,1)+"").length()>25)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"").substring(0,25);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,1)+"");
                                    }

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((s+""),80,50+(filas_impresion*10));//codigo
                                pagina.drawString((s3[0].replace("<html>", "").replace("</html>", "")+""),250,50+(filas_impresion*10));//id
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),310,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),410,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),550,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),610,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),670,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),730,50+(filas_impresion*10));//precio
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias

            if (opcion==5)
                 {
                        pagina.drawString("Id.Art",20,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",60,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Descripcion",165,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",400,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("P.Rebaja",440,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Cantidad",480,50+(filas_impresion*10));//100

                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>30)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,30);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,0)+""),20,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),60,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,165,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),400,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),440,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),480,50+(filas_impresion*10));//precio
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
        if (opcion==6)
                 {

                        pagina.drawString("idsub",15,50+(filas_impresion*10));//cantidad 20

                        pagina.drawString("cant",400,50+(filas_impresion*10));//100
                        pagina.drawString("Importe Costo",500,50+(filas_impresion*10));//100

                        filas_impresion+=2;

                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                //if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>35)
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,35);
                                    //}
                                //else
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    //}
                                    try
                                    {
                                        s=this.Objeto_tabla.getValueAt(ni,2).toString();
                                   } catch(Exception e){
                                        s="";
                                        e.printStackTrace();
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),15,50+(filas_impresion*10));//codigo

                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),400,50+(filas_impresion*10));//precio
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),500,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3).toString().replace("<html><b>", "").replace("</b></html>", "").replace("<h2>", "").replace("</h2>", "")+""),500,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");
                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias

        if (opcion==7)
                 {

                        
                        pagina.drawString("familia",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("cant teo.",250,50+(filas_impresion*10));//100
                        pagina.drawString("Cant Fis.",300,50+(filas_impresion*10));//100
                        pagina.drawString("Cant dif.",350,50+(filas_impresion*10));//100
                        pagina.drawString("Costo Teo",400,50+(filas_impresion*10));//100
                        pagina.drawString("Costo Fis",450,50+(filas_impresion*10));//100
                        pagina.drawString("Costo dif",500,50+(filas_impresion*10));//100
                        filas_impresion+=2;
                        for(int i=0;i<=35;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                //if((this.Objeto_tabla.getValueAt(ni,2)+"").length()>35)
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"").substring(0,35);
                                    //}
                                //else
                                    //{
                                    //    s=(this.Objeto_tabla.getValueAt(ni,2)+"");
                                    //}
                                    try
                                    {
                                        s=this.Objeto_tabla.getValueAt(ni,0).toString();
                                   } catch(Exception e){
                                        s="";
                                        e.printStackTrace();
                                    }
                                pagina.drawString(s,15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),250,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),300,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),350,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),400,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,5)+""),450,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6).toString().replace("<html><b>", "").replace("</b></html>", "").replace("<h2>", "").replace("</h2>", "")+""),500,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                        System.out.println("Termine de imprimir los productos");

                           filas_impresion++;
                           pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                if (opcion==8)
                 {
                        pagina.drawString("Id.Art",10,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("C.Barra",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Descripcion",190,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",350,50+(filas_impresion*10));//100
                        pagina.drawString("Teorico",380,50+(filas_impresion*10));//100
                        pagina.drawString("Fisico",420,50+(filas_impresion*10));//100
                        pagina.drawString("Dif",460,50+(filas_impresion*10));//100
                        pagina.drawString("Familia",490,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=50;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,5)+"").length()>20)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,5)+"").substring(0,20);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,5)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),10,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,4)+""),50,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,12)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,190,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),310,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),350,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,9)+""),380,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,10)+""),420,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),460,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),490,50+(filas_impresion*10));//codigo

                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
        if (opcion==9)
                 {
                        pagina.drawString("Id.Art",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("C.Barra",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Descripcion",190,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",355,50+(filas_impresion*10));//100
                        pagina.drawString("P.Rebaja",390,50+(filas_impresion*10));//100
                        pagina.drawString("Existencia",430,50+(filas_impresion*10));//100
                        pagina.drawString("Familia",480,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=50;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,4)+" ").length()>18)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+" ").substring(0,18);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),50,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,190,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),310,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),355,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),400,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),430,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),460,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                if (opcion==10)
                 {
                        pagina.drawString("Id.Art",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("C.Barra",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Descripcion",190,50+(filas_impresion*10));//descuento 20
                        //pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",355,50+(filas_impresion*10));//100
                        pagina.drawString("P.Rebaja",390,50+(filas_impresion*10));//100
                        pagina.drawString("Existencia",430,50+(filas_impresion*10));//100
                        pagina.drawString("Familia",480,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=50;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,4)+" ").length()>18)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+" ").substring(0,18);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),50,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,190,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),310,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),355,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),400,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),430,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),460,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                 if (opcion==11)
                 {
                        pagina.drawString("Id.Art",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("C.Barra",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Descripcion",190,50+(filas_impresion*10));//descuento 20
                        //pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",355,50+(filas_impresion*10));//100
                        pagina.drawString("P.Rebaja",390,50+(filas_impresion*10));//100
                        pagina.drawString("Existencia",430,50+(filas_impresion*10));//100
                        pagina.drawString("Familia",500,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("",190,50+(filas_impresion*10));//descuento 20
                        //pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("",355,50+(filas_impresion*10));//100
                        pagina.drawString("",390,50+(filas_impresion*10));//100
                        pagina.drawString("Bod",420,50+(filas_impresion*10));//100
                        pagina.drawString("Tie",440,50+(filas_impresion*10));//100
                        pagina.drawString("Total",460,50+(filas_impresion*10));//100
                        pagina.drawString("",500,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=50;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,4)+" ").length()>18)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+" ").substring(0,18);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),50,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,190,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),310,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),355,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),400,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),420,50+(filas_impresion*10));//EXI BOD
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,12)+""),440,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),470,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,15)+""),500,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
                if (opcion==12)
                 {
                        pagina.drawString("Id.Art",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("Clave",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("C.Barra",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Descripcion",190,50+(filas_impresion*10));//descuento 20
                        //pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("Precio",355,50+(filas_impresion*10));//100
                        pagina.drawString("P.Rebaja",390,50+(filas_impresion*10));//100
                        pagina.drawString("Existencia",430,50+(filas_impresion*10));//100
                        pagina.drawString("Familia",500,50+(filas_impresion*10));//100
                        filas_impresion+=1;
                        pagina.drawString("",15,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("",50,50+(filas_impresion*10));//cantidad 20
                        pagina.drawString("",140,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("",190,50+(filas_impresion*10));//descuento 20
                        //pagina.drawString("Costo",310,50+(filas_impresion*10));//descuento 20
                        pagina.drawString("",355,50+(filas_impresion*10));//100
                        pagina.drawString("",390,50+(filas_impresion*10));//100
                        pagina.drawString("Bod",420,50+(filas_impresion*10));//100
                        pagina.drawString("Tie",440,50+(filas_impresion*10));//100
                        pagina.drawString("Total",460,50+(filas_impresion*10));//100
                        pagina.drawString("",500,50+(filas_impresion*10));//100
                        filas_impresion+=2;

                        for(int i=0;i<=50;i++)
                        {
                            pagina.drawString("-",i*10,50+(filas_impresion*10));
                        }
                        filas_impresion+=2;
                    /*Impresion de los productos*/
                        nif=((pag+1)*50);
                        nip=((pag+1)*50)-50;
                        if (nif < nobjetotabla )
                            {
                                nobjetotabla=nif;
                            }

                        System.out.println("revisa :"+nip+"final"+nif+"tabla"+nobjetotabla);

                        for(ni=nip;ni<nobjetotabla;filas_impresion+=1,ni++)
                           {
                                if((this.Objeto_tabla.getValueAt(ni,4)+" ").length()>18)
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+" ").substring(0,18);
                                    }
                                else
                                    {
                                        s=(this.Objeto_tabla.getValueAt(ni,4)+"");
                                    }
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,1)+""),15,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,2)+""),50,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,3)+""),140,50+(filas_impresion*10));//codigo
                                pagina.drawString(s,190,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,8)+""),310,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,6)+""),355,50+(filas_impresion*10));//precio
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,7)+""),400,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,11)+""),420,50+(filas_impresion*10));//EXI BOD
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,12)+""),440,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,13)+""),470,50+(filas_impresion*10));//codigo
                                pagina.drawString((this.Objeto_tabla.getValueAt(ni,15)+""),500,50+(filas_impresion*10));//codigo
                                //pagina.drawString((this.Objeto_tabla.getValueAt(ni,5).toString().replace("<html><b>", "").replace("</b></html>", "")+""),275,50+(filas_impresion*10));//id
                                System.out.println("Imprimiendo :"+s);
                                //filas_impresion+=1;
                                //pagina.drawString(s,10,50+((filas_impresion)*10));//descripcion 140 120 100


                             }
                            System.out.println("Termine de imprimir los productos");
                            filas_impresion++;
                            pagina.drawString(".",150,50+(filas_impresion*10));//codigo

                for(indice_arreglo++;indice_arreglo<nobjetocadenas &&
                       !(this.cadenas_a_imprimir.get(indice_arreglo)+"").equals("*")
                    ;filas_impresion++,indice_arreglo++)
                   {
                        pagina.drawString(this.cadenas_a_imprimir.get(indice_arreglo)+"",0,50+(filas_impresion*10));
                   }
               /*mensajes para pedido etc.*/
                 }//fin de imprecion de recepcion ahora sigue bloque para diferencias
            }
            pagina.dispose();
            pagina.finalize();
			pj.end();
		}
        catch(Exception e)
		{
			System.out.println("LA IMPRESION HA SIDO CANCELADA..."+e.getMessage());
		}
	}//FIN DEL PROCEDIMIENTO imprimir(String)

    public void setOneItem_cadenas_a_imprimir(String s)
    {
        this.cadenas_a_imprimir.addElement(s);
    }
    /**
     * @return the Objeto_textarea
     */
    public JTextArea getObjeto_textarea() {
        return Objeto_textarea;
    }

    /**
     * @param Objeto_textarea the Objeto_textarea to set
     */
    public void setObjeto_textarea(JTextArea Objeto_textarea) {
        this.Objeto_textarea = Objeto_textarea;
    }

    /**
     * @return the Objeto_tabla
     */
    public JTable getObjeto_tabla() {
        return Objeto_tabla;
    }
 public void setObjeto_tabla(JTable Objeto_tabla) {
        this.Objeto_tabla = Objeto_tabla;
    }
    /**
     * @param Objeto_tabla the Objeto_tabla to set
     */
    public void setMargen(int omargen) {
        this.margen = omargen;
    }

    public int getMargen() {
        return margen;
    }
  public void setInterlineado(int interlineado) {
        this.vinterlineado = interlineado;
    }

    public int getInterlineado() {
        return vinterlineado;
    }
    public void setlineasxpag(int flineasxpag) {
        this.lineasxpag = flineasxpag;
    }

    public int getlineasxpag() {
        return lineasxpag;
    }
    /**
     * @param Objeto_tabla the Objeto_tabla to set
     */


}
